package edu.erpan.bl.entities.administracion;

import java.io.Serializable;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;

import edu.erpan.util.entityManager.DefaultEntity;


/**
 * The persistent class for the modulos database table.
 * 
 */
@Entity
@Table(name="modulos")
public class Modulo extends DefaultEntity implements Serializable {
	private static final long serialVersionUID = 1L;

	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	@Column(unique=true, nullable=false)
	private int idmodulo;

	@Column(nullable=false, length=200)
	private String descripcion;

	@Column(nullable=false, length=45)
	private String nombre;

	@Column(name="bean", length=200)
	private String bean;
	
	@Column(name="ubicacion_pagina_inicio", nullable=false, length=300)
	private String ubicacionPaginaInicio;

	//bi-directional many-to-one association to Modulo
    @ManyToOne
	@JoinColumn(name="idmenu_padre",referencedColumnName="idmodulo")
	private Modulo moduloPadre;

    @Column(name="orden")
	private Integer orden;
    
	//bi-directional many-to-one association to Modulo
	@OneToMany(mappedBy="moduloPadre", cascade={CascadeType.ALL},fetch=FetchType.EAGER)
	private List<Modulo> modulos;
	
	//uni-directional many-to-many association to Modulo
	@ManyToMany(mappedBy="modulos", cascade={CascadeType.REMOVE})
	private List<Rol> roles;

    public Modulo() {
    }

	public int getIdmodulo() {
		return this.idmodulo;
	}

	public void setIdmodulo(int idmodulo) {
		this.idmodulo = idmodulo;
	}

	public String getDescripcion() {
		return this.descripcion;
	}

	public void setDescripcion(String descripcion) {
		this.descripcion = descripcion;
	}

	public String getNombre() {
		return this.nombre;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	public String getUbicacionPaginaInicio() {
		return this.ubicacionPaginaInicio;
	}

	public void setUbicacionPaginaInicio(String ubicacionPaginaInicio) {
		this.ubicacionPaginaInicio = ubicacionPaginaInicio;
	}

	public Modulo getModuloPadre() {
		return this.moduloPadre;
	}

	public void setModuloPadre(Modulo moduloPadre) {
		this.moduloPadre = moduloPadre;
	}
	
	public List<Modulo> getModulos() {
		return this.modulos;
	}

	public void setModulos(List<Modulo> modulos) {
		this.modulos = modulos;
	}

	public List<Rol> getRoles() {
		return roles;
	}

	public void setRoles(List<Rol> roles) {
		this.roles = roles;
	}

	/**
	 * @return the orden
	 *
	 * @author Jeison
	 * @date 19/03/2013
	 */
	public int getOrden() {
		return orden;
	}

	/**
	 * @param orden the orden to set
	 * 
	 * @author Jeison
	 * @date 19/03/2013
	 */
	public void setOrden(int orden) {
		this.orden = orden;
	}

	public String getBean() {
		return bean;
	}

	public void setBean(String bean) {
		this.bean = bean;
	}
	
}